import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse, type InternalAxiosRequestConfig } from "axios";

// 创建axios实例--- 基础配置
const service: AxiosInstance = axios.create({
    baseURL: "http://geek.itheima.net",
    timeout: 3000
})

// 请求拦截器
service.interceptors.request.use((conf: InternalAxiosRequestConfig) => {
    // 一般会操作：设置头部
    conf.headers["Content-Type"] = "application/x-www-form-urlencoded"
    // conf.headers["token"]
    return conf
})

// 响应拦截去
service.interceptors.response.use((conf: AxiosResponse) => {
    return conf.data
})

// 返回值 公用 接口类型
export interface ApiResponse<T> {
    code:number,
    message: string,
    response: T
}

// 程序并不能知道 .then 的返回值  conf.data
// 告诉程序，.then 返回值 修改了

export default <T>(config: AxiosRequestConfig): Promise<ApiResponse<T>> => {
    return service(config)
}
